记录一些随便写的 python 的东西。
打包依赖
pip list --format=freeze > requirements.txt
小说 .txt 文件分段
最近在看小说,在网络上下载了.txt文件到kindle上看,结果发现文字段落间没有空白行╮(╯_╰)╭,于是乎,只能自己动手了。
def process():
with open("novel.txt", "rt", encoding="utf8") as f:
lines = f.readlines()
# 由于原文中存在 \n 独自成一行,strip()过滤后仍会留下空的元素
new_lines = [line.strip() + "\n\n" for line in lines]
# 每两行文字间空一行
# new_lines = [line + "\n" for line in filter(lambda x: x.strip(), lines)]
with open("output.txt", "wt", encoding="utf8") as f:
f.writelines(new_lines)
process()
漫画 图片纵向拼接
最近在看漫画,网页端和手机端看着都不舒服,于是把漫画的.jpg文件爬取下来,再纵向拼接成一张图来看。
TO BE WRITTEN...
Kindle .epub 文件分段
最近又在看小说,这次是 .epub 文件,段与段之间还是没有空白行,看着很难受 (\╯﹏╰)—\,于是写个脚本处理一下。
.epub 文件结构
将 .epub 文件当压缩包打开,可以看到,文件目录如下:
—— META-INF
—— OEBPS
—— Images
—— Styles
—— Test <-- 里面是想要修改的.html文件
.epub 文件中文字内容是以 .html 的形式存在的(其实就是把一群 .html 页面打包了)
实现代码
import os
import zipfile
import bs4
def zip_epub():
# 设置EPUB文件名和文件路径
epub_file = "src/New The Little Prince.epub"
epub_folder = "src/New The Little Prince"
# 创建一个新的EPUB文件
with zipfile.ZipFile(epub_file, "w") as new_epub:
# 遍历EPUB文件夹中的所有文件和文件夹,并添加到新的EPUB文件中
for folder_name, sub_folders, file_names in os.walk(epub_folder):
# 遍历文件夹中的所有文件,并添加到新的EPUB文件中
for file_name in file_names:
# 获取文件的完整路径
file_path = os.path.join(folder_name, file_name)
# 将HTML文件放置在OEBPS/Text/文件夹下
if file_name.endswith(".html"):
file_path_in_epub = os.path.join("OEBPS", "Text", file_name.replace(" ", "_").lower())
else:
file_path_in_epub = os.path.relpath(file_path, epub_folder)
# 将文件添加到新的EPUB文件中
new_epub.write(file_path, file_path_in_epub)
print("EPUB文件已经生成完成!")
def process():
# 打开epub文件
with zipfile.ZipFile('./src/The Little Prince.epub', 'r') as myzip:
# 获取文件列表
files = myzip.namelist()
# 遍历文件列表并提取html文件
for file in files:
if file.endswith(".html"):
# 读取HTML文件内容
html_content = myzip.read(file)
# 解析HTML文件
soup = bs4.BeautifulSoup(html_content, 'html.parser')
# 获取所有的<p>标签
p_tags = soup.find_all('p')
# 在每两个<p>标签之间增加一个空白行
for i in range(1, len(p_tags)):
p_tags[i - 1].insert_after(soup.new_tag('br'))
# 将修改后的HTML保存到新文件中
with open(f'src/New The Little Prince/{file}', 'w', encoding="utf-8") as new_html_file:
new_html_file.write(soup.prettify())
process()
zip_epub()